/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controle;

import entidades.Laboratorio;
import entidades.Professor;
import entidades.Reservas;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;
import org.primefaces.event.FlowEvent;
import persistencia.RepositorioJPALaboratorio;
import persistencia.RepositorioJPAReservas;
import persistencia.RepositorioJPAUsuarios;

/**
 *
 * @author Gleydson
 */
@ManagedBean(name = "ReservasBean")
@SessionScoped

public class ReservasBean {
    
    private Reservas bean;
    private List<Professor> professores;
    
    private RepositorioJPAReservas repositorio;
    private RepositorioJPAUsuarios repositorioUsuarios;
    
    private List<Reservas> lista;
    private List<Reservas> reservasLab;
    
    private boolean insert;
    private List<Laboratorio> laboratorios;
    
    private RepositorioJPALaboratorio repositorioLaboratorios;
    private boolean skip;
    
    public ReservasBean(){
        bean = new Reservas();
        repositorio = new RepositorioJPAReservas();
        repositorioLaboratorios = new RepositorioJPALaboratorio();
        repositorioUsuarios = new RepositorioJPAUsuarios();
        lista = repositorio.getAll();
        insert = true;
    }

    public void botaoNovoAction(){
        skip = true;
        insert = true;
        professores = repositorioUsuarios.listarProfessores();
        laboratorios = repositorioLaboratorios.getAll();
        bean = new Reservas();
    }

    public void botaoApagarAction(){
        getRepositorio().delete(getBean());  
        lista = repositorio.getAll();
    }
    
    public void botaoSalvarAction(){
        if(insert)
            getRepositorio().insert(getBean());
        else
            getRepositorio().update(getBean());
        
        lista = repositorio.getAll();
    }
    
    public void selectOneMenuOnChange(AjaxBehaviorEvent event){
            reservasLab = bean.getLaboratorio().getReservasList();
    }

    public String onFlowProcess(FlowEvent event) {  
        if(skip) {  
            skip = false;   //reset in case user goes back  
            return "confirm";  
        }  
        else {  
            return event.getNewStep();  
        }  
    }  

    
    public Reservas getBean() {
        return bean;
    }

    /**
     * @param tipo the tipo to set
     */
    public void setBean(Reservas bean) {
        this.bean = bean;
    }

    /**
     * @return the repositorioTipo
     */
    public RepositorioJPAReservas getRepositorio() {
        return repositorio;
    }

    /**
     * @param repositorioTipo the repositorioTipo to set
     */
    public void setRepositorio(RepositorioJPAReservas repositorio) {
        this.repositorio = repositorio;
    }

    /**
     * @return the tipos
     */
    public List<Reservas> getLista() {
        return lista;
    }

    /**
     * @param tipos the tipos to set
     */
    public void setLista(List<Reservas> lista) {
        this.lista = lista;
    }

    /**
     * @return the laboratorios
     */
    public List<Laboratorio> getLaboratorios() {
        return laboratorios;
    }

    /**
     * @param laboratorios the laboratorios to set
     */
    public void setLaboratorios(List<Laboratorio> laboratorios) {
        this.laboratorios = laboratorios;
    }

    /**
     * @return the reservasLab
     */
    public List<Reservas> getReservasLab() {
        return reservasLab;
    }

    /**
     * @param reservasLab the reservasLab to set
     */
    public void setReservasLab(List<Reservas> reservasLab) {
        this.reservasLab = reservasLab;
    }

    /**
     * @return the professores
     */
    public List<Professor> getProfessores() {
        return professores;
    }

    /**
     * @param professores the professores to set
     */
    public void setProfessores(List<Professor> professores) {
        this.professores = professores;
    }
    
}
